A. Library yang dibutuhkan

Install library yang belum ada di RStudio Anda. Library ggplot2 dan plotly digunakan untuk visualisasi, sedangkan lubridate digunakan untuk mempermudah format tanggal. Selanjutnya jalankan skrip seperti biasa.

library(ggplot2)
library(plotly)
library(lubridate)
library(dplyr)

B. Ambil data

Untuk keperluan pertemuan ini, kita akan menggunakan dataset yang diambil dari tautan berikut ini: https://www.kaggle.com/canggih/anime-data-score-staff-synopsis-and-genre. Silakan unduh, ekstrak dari zip, kemudian masukkan file ke dalam direktori projek yang sudah dibuat.

File yang diunduh bertipe CSV (comma separated values) yang bisa diimpor ke R dengan perintah berikut:

df <- read.csv("dataanime.csv")
colnames(df)
##  [1] "Title"           "Type"            "Episodes"        "Status"         
##  [5] "Start.airing"    "End.airing"      "Starting.season" "Broadcast.time" 
##  [9] "Producers"       "Licensors"       "Studios"         "Sources"        
## [13] "Genres"          "Duration"        "Rating"          "Score"          
## [17] "Scored.by"       "Members"         "Favorites"       "Description"

Selanjutnya, untuk keperluan pengolahan lebih lanjut, kolom Start.airing dan End.airing kita ubah tipenya menjadi tanggal dengan bantuan perintah ymd() yang terdapat pada library lubridate.

df$Start.airing <- ymd(df$Start.airing)
df$End.airing <- ymd(df$End.airing)

C. Visualisasi data

Ada 4 tujuan dari visualisasi data, yaitu:

C.1. Distribution

Visualisasi jenis ini digunakan untuk mengetahui persebaran dari suatu data/variabel.

C.1.a. Histogram

Visualisasi histogram menggunakan ggplot dapat dicontohkan pada skrip berikut. Sebagai contoh, kita akan mengambil variabel Score untuk dibuat histogram.

ggplot(df,aes(Score)) + 
  geom_histogram()

Contoh lain, sebagai variasi dari histogram yang ditambah dengan density:

ggplot(df,aes(Score)) + 
  geom_histogram(aes(y=..density..)) +
  geom_density(alpha=.2, fill="#FF6666")

Sedangkan apabila menggunakan library plotly, maka kita tuliskan skrip berikut ini.

plot_ly(df,x = ~Score, type = "histogram")

C.1.b. Boxplot

Jenis visualisasi kedua dalam tipe Distribution yaitu Boxplot. Menggunakan ggplot kita dapat membuat boxplot sebagai berikut.

ggplot(df,aes(Score)) +
  geom_boxplot()

Jika ingin membandingkan beberapa boxplot, kita dapat menambahkan data lain (misal Type) dengan memanfaatkan axis y sebagai berikut:

ggplot(df,aes(x=Score,y=Type)) +
  geom_boxplot()

Untuk visualisasi yang sama menggunakan library plotly, skripnya adalah:

plot_ly(df,x=~Score,type = "box")
plot_ly(df,x=~Score,y=~Type,type = "box")

C.2. Comparison

Visualisasi tipe ini bertujuan untuk membandingkan antar nilai atau kelompok nilai

C.2.a. Bar Chart

Seperti yang sudah diketahui, bahwa Bar chart membutuhkan 1 variabel numerik dan 1 kategorik. Oleh karena itu, untuk membentuk Bar chart kita akan membuat data agregat sebagai berikut:

dfg <- df %>%
  group_by(Type) %>%
  summarise(rerata_score=mean(Score),rerata_member=mean(Members),rerata_favorite=mean(Favorites),rerata_scoredby=mean(Scored.by))
dfg
## # A tibble: 6 x 5
##   Type    rerata_score rerata_member rerata_favorite rerata_scoredby
##   <chr>          <dbl>         <dbl>           <dbl>           <dbl>
## 1 Movie           7.90        68404.           674.           38288.
## 2 Music           7.75        19561.           162.           12224.
## 3 ONA             7.71        43580.           407.           20924.
## 4 OVA             7.86        42707.           382.           22092.
## 5 Special         7.82        38316.            94.2          21332.
## 6 TV              7.95       171893.          3994.           89112.

Untuk visualisasi bar chart, sebagai contoh kita gunakan kolom rerata_score sebagai data numerik dan Type sebagai data kategorik.

ggplot(dfg,aes(x=rerata_score,y=Type)) +
  geom_col()

Dengan data yang sama, kita dapat menampilkan bar chart menggunakan plotly sebagai berikut:

plot_ly(dfg,x=~rerata_member,y=~Type,type = "bar")

C.2.b. Line Chart

Untuk line chart, kita akan menggunakan variabel waktu, yaitu Start.airing berikut

ggplot(df,aes(x=Start.airing,y=Members)) +
  geom_line()

Sedangkan pada penggunaan library plotly kita terlebih dahulu harus mengurutkan axis x yang berisi waktu sebagai berikut.

df <- df %>%
  arrange(Start.airing)

Kemudian hasilnya kita gunakan untuk menampilkan line chart berikut

plot_ly(df,x=~Start.airing,y=~Score,type="scatter",mode="lines")

C.3. Relation

Jenis visualisasi ini untuk melihat relasi antar variabel.

C.3.a. Scatter plot

Scatter plot merupakan salah satu jenis visualisasi yang akan sering kita gunakan. Pembuatan chart ini menggunakan ggplot adalah sebagai berikut:

ggplot(df,aes(x=Score,y=Members)) +
  geom_point()

Sedangkan pada plotly kita dapat tuliskan sebagai berikut

plot_ly(df,x=~Score,y=~Members,type="scatter")

C.3.b. Bubble chart

Pada dasarnya, bubble chart sama dengan scatter plot dengan menambahkan 1 atau 2 variabel numerik baru untuk warna dan ukuran titik. Contoh penggunaannya dalam ggplot adalah

ggplot(df,aes(x=Favorites,y=Members,size=Score,color=Type)) +
  geom_point()

Sedangkan ketika menggunakan plotly dapat kita gunakan skrip berikut

plot_ly(df,x=~Members,y=~Favorites,type="scatter",mode="markers",
        marker = list(size = ~Score, opacity = 0.5))

C.4. Composition

Visualisasi tipe ini bertujuan untuk melihat porsi dalam sebuah kesatuan kelompok atau variabel. Pada praktek di sini, kita akan menggunakan data yang sama dengan visualisasi bar chart pada bagian C.2.a di atas.

C.4.a. Pie Chart

Pie chart cukup populer digunakan dalam visualisasi data, meskipun sebenarnya tidak direkomendasikan oleh para ahli visualisasi data. Pembuatan pie chart menggunakan ggplot adalah sebagai berikut:

ggplot(dfg, aes(x="", y=rerata_member, fill=Type)) +
  geom_bar(stat="identity", width=1) +
  coord_polar("y", start=0)

Sedangkan bila kita menggunakan library plotly, perintahnya adalah:

plot_ly(dfg, labels = ~Type, values = ~rerata_member, type = 'pie')

C.4.b. Stacked Bar chart

Jenis visualisasi ini tidak terlalu sering digunakan untuk keperluan eksplorasi data. Penulisan skripnya menggunakan plotly adalah sebagai berikut:

fig <- plot_ly(dfg, x = ~Type, y = ~rerata_member, type = 'bar',name="Member")
fig <- fig %>% add_trace(y = ~rerata_scoredby, name = 'Favorite')
fig %>% layout(yaxis = list(title = 'Count'), barmode = 'stack')

Tugas

Buatlah tampilan visual (boleh menggunakan chart tipe manapun yang sesuai) menggunakan data pada kolom Starting.season, Studios, atau Sources. Boleh digabung dengan kolom-kolom lain, tapi minimal satu dari 3 kolom tadi harus ada. Kemudian ceritakan informasi menarik apa yang dapat Anda temukan dari hasil visual tersebut.